package org.example;

import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;

import java.io.File;
import java.util.Arrays;
import java.util.List;

/**
 * 图像获取模块
 */
public class ImageCapture {
    // 图像路径
    private String imageFolderPath;

    public ImageCapture(String imageFolderPath) {
        this.imageFolderPath = imageFolderPath;
    }

    /**
     * 获取最新图像
     * @param count 获取的图像数量
     * @return 图像列表
     */
    public List<File> getLatestImages(int count) {
        File folder = new File(imageFolderPath);
        File[] files = folder.listFiles((dir, name) -> name.endsWith(".jpg") || name.endsWith(".png"));
        if (files == null || files.length == 0) {
            throw new RuntimeException("该文件夹找不到图像");
        }
        // 图片实现降序排序
        Arrays.sort(files, (f1, f2) -> Long.compare(f2.lastModified(), f1.lastModified()));
        //返回图片列表
        return Arrays.asList(files).subList(0, Math.min(count, files.length));
    }

    /**
     * 加载图片
     * @param file 图片文件
     * @return 返回Mat图片像素数据对象
     */
    public Mat loadImage(File file) {
        return Imgcodecs.imread(file.getAbsolutePath());
    }
}
